#ifndef __LL_REPORTER_HPP__
#define __LL_REPORTER_HPP__

#include "llToken.hpp"
#include "llLex.hpp"

#include <string>
using namespace std;

namespace llmake
{
/// token engine
	class llReporter
	{
// methoda
	public:
		llReporter(const string &info)
		 :m_Info(info)
		{
			
		}
		void append(const llTokenNode &token)
		{
			m_TokenList.push_back(token);
		}
		void append(llTokenList &tokens)
		{
			for (llTokenList::iterator iter = tokens.begin();iter != tokens.end(); ++iter)
			{
				m_TokenList.push_back(*iter);
			}
		}
		void append(const llLexNode &lex)
		{
			m_Lexlist.push_back(lex);
		}
		void append(llLexList &lexs)
		{
			for (llLexList::iterator iter = lexs.begin();iter != lexs.end(); ++iter)
			{
				m_Lexlist.push_back(*iter);
			}
		}
		void Error(void);
		void Warning(void);
// members
	private:
		string 				m_Info;
		llTokenList			m_TokenList;
		llLexList 			m_Lexlist;
	};
};

#endif // __LL_REPORTER_HPP__
